Call Detail Records (CDR) in Bring Your Blob Storage

Call Detail Record (CDR) data is generated by Interaction Insights and stored in JSON files inside your Azure Blob Storage account. CDRs include information on each call and point to the corresponding media files. The CDR in the storage includes call information that can be manually exported in the Service portal and additional fields.

A CDR in the storage is a JSON document containing comprehensive call information including: targeted user info, calling/called parties, start/end times, call identifiers, participants, media locations, recording type, and the recording role (Primary/Secondary in case of Pro offering).

Redundancy & High Availability
Essential license: The up time for recording in this offering is 99.5%, lower than the Pro dual-region configuration. Customers must provide an accessible Azure Blob Storage container to store the Call Detail Records (CDRs) and recordings.
Pro license:  two Microsoft Teams bots are deployed in different Azure regions and in parallel two Geo-Redundant Storage (GRS) accounts are used: one in each region alongside bots. Each bot writes recordings to the storage in its region. During normal operation, the Primary recording is displayed in the Service portal and the user can optionally switch to listen to the Secondary recording (if available). If a Primary recording fails, the Secondary recording is automatically promoted to Primary and is displayed in the Service portal.

Storage recommendation for sustained >99.99% availability and in the process avoiding duplication: Create two GRS storage accounts (one per region). When exporting, initially scan CDRs in Azure Region 1 and then export all items marked as Primary, ten scan Azure Region 2 and also only export items marked as 'Primary'. This avoids duplicates and follows the promotion logic.

Tag-Based Retrieval (Blob Index Tags): CDR JSON blobs are tagged to enable fast retrieval without walking directory trees. The standard tags are:
date — Date the CDR was created (e.g., 2025‑05‑05)
time — Time the CDR was created (e.g., 13:55:45)
modified — Timestamp updated when the CDR is amended

CDR JSON (top)

CDR JSON (media section)

Azure Storage browser: CDR JSON blob

Azure Storage browser: Blob properties & index tags

 

Recommended Retrieval Flow:
1. Choose a scan window (e.g., every 60–120 minutes).
2. In Azure Region 1 storage: query by tags for new/modified CDRs within the window; export all CDRs with DoubleRecordingType=Primary.
3. In Azure Region 2 storage: query by tags for the same window; export all CDRs with DoubleRecordingType=Primary (to include promoted secondaries).
4. Optionally configure a shorter retention period in Interaction Insights for CDRs to cover failure scenarios.
5. Fetch media using the path components from the CDR (container + subdirectory + file name).

Below is an example of creating a SAS token for the storage container from the Azure CLI:

Command template:

Copy
az storage container generate-sas --account-name <account-name> --name <connection-name> --permissions racwdxlt --expiry <expiration-date> --start <start-date>

Where:

<account-name>: The storage account name (not the full FQDN)
<connection-name>: Friendly name for the SAS connection
<expiration-date>: Expiry in yyyy-mm-dd format
<start-date>: Start date in yyyy-mm-dd format

Example:

Copy
az storage container generate-sas --account-name rts53 --name rts-sas --permissions racwdxlt --expiry 2028-01-01 --start 2025-04-30